package com.shujia.day10;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Demo08Collections {
    public static void main(String[] args) {
        /*
            TODO Collections 工具类：
                public static <T> void sort(List<T> list)  排序
                public static <T> int binarySearch(List<?> list,T key) 二分查找Key对应的下标位置
                public static <T> T max(Collection<?> coll) // 最大值
                public static void reverse(List<?> list)  // 反转
                public static void shuffle(List<?> list) // 洗牌 随机对数据进行打乱顺序
         */
        ArrayList<Integer> integerArrayList = new ArrayList<>();
        integerArrayList.add(3);
        integerArrayList.add(1);
        integerArrayList.add(2);
        integerArrayList.add(4);
        Collections.sort(integerArrayList);
        System.out.println(integerArrayList);


        ArrayList<StudentObj> allStu = new ArrayList<>();
        allStu.add(new StudentObj("001","张三"));
        allStu.add(new StudentObj("003","李四"));
        allStu.add(new StudentObj("002","王五"));
        System.out.println(allStu);

        // 排序需要实现其compareTo方法
//        Collections.sort(allStu);
        Collections.sort(allStu, new Comparator<StudentObj>() {
            @Override
            public int compare(StudentObj o1, StudentObj o2) {
                return o1.id.compareTo(o2.id);
            }
        });

        StudentObj maxObj = Collections.max(allStu, new Comparator<StudentObj>() {
            @Override
            public int compare(StudentObj o1, StudentObj o2) {
                return o1.id.compareTo(o2.id);
            }
        });
        System.out.println(maxObj);

        Collections.shuffle(allStu);
        System.out.println(allStu);

        /*
            TODO 现阶段大家能完成的需求
                数据总量是一定的  可以保存到集合中
                对批量数据进行做判断
                    排序 最大值 最小值 关联 分组求和 数据过滤 排名
                    SQL =>
                        (FROM 数据加载？ 可以从控制台输入数据)
                        JOIN  ON 关联 => 两个集合之间的遍历
                        WHERE 过滤 => 集合删除
                        GROUP BY 分组 => 使用Map+List结构
                        HAVING 统计过滤 => 删除
                        ORDER BY 排序 => sort函数 TreeMap ..
                        Limit 限制数据 => for循环遍历
                   思考上述过程如何实现
         */

    }
}

//class StudentObj implements Comparable<StudentObj>{
class StudentObj {
    String id;
    String name;

    public StudentObj(String id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "StudentObj{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                '}';
    }

//    @Override
//    public int compareTo(StudentObj o) {
//        return -this.id.compareTo(o.id);
//    }
}
